package com.pms.mapper;

import com.pms.pojo.SysUser;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface SysUserMapper {



    void insert(SysUser sysUser);

    void update(SysUser sysUser);

    @Delete("delete from sys_user where id = #{id}")
    void deleteById(Long id);

    @Select("select * from sys_user where id = #{id}")
    SysUser getById(Long id);

    @Select("select * from sys_user")
    List<SysUser> list();

    void updateStatus(@Param("id") Long id, @Param("status") Integer status);

    int checkCodeExists(@Param("code") String code, @Param("id") Long id);

    /**
     * 查询总记录数
     */
    Long count(@Param("code") String code,
               @Param("name") String name,
               @Param("deptId") Long deptId,
               @Param("postId") Long postId,
               @Param("status") Integer status);

    /**
     * 分页查询
     */
    List<SysUser> page(@Param("start") Integer start,
                       @Param("pageSize") Integer pageSize,
                       @Param("code") String code,
                       @Param("name") String name,
                       @Param("deptId") Long deptId,
                       @Param("postId") Long postId,
                       @Param("status") Integer status);

    /**
     * 批量查询用户信息
     * @param ids 用户ID列表
     * @return 用户信息列表
     */
    List<SysUser> selectByIds(List<Long> ids);

    /**
     * 批量删除
     */
    void batchDelete(@Param("ids") List<Long> ids);

    /**
     * 根据用户名查询用户
     *
     * @param code
     * @return
     */
    SysUser getByCodeWithDeptAndPost(String code);

    /**
     * 修改用户密码
     * @param id 用户ID
     * @param password 新密码
     * @return 影响的行数
     */

    int updatePassword(@Param("id") Long id, @Param("password") String password);

    /**
     * 获取用户密码
     * @param id 用户ID
     * @return 用户密码
     */
    @Select("select password from sys_user where id = #{id}")
    String getPasswordById(@Param("id") Long id);

    /**
     * 根据用户ID查询用户详细信息
     * @param userId
     * @return
     */
    SysUser getUserDetailInfo(Long userId);
}
